/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Informacion.Usuarios.Controlador;

import Informacion.Usuarios.BEAN.UsuarioBEAN;
import Informacion.Usuarios.DAO.UsuarioDAO;
import Informacion.Usuarios.Vista.AgregarUsuarios;
import Informacion.Usuarios.Vista.Usuarios;
import Informacion.Usuarios.Vista.VerUsuarios;

import sape.Controlador;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import sape.ControladorTabla;
import sape.MenuControlador;

/**
 *
 * @author melis_000
 */
public class UsuariosControlador extends ControladorTabla{
    Usuarios vista=null;
    MenuControlador menu_controlador=null;
    
    String[] columnas_tabla = {"Id","Nombre","Mail"};
    Object[][] datos_tabla = null;
    
    
    public UsuariosControlador(Usuarios vista, MenuControlador menuControlador){
        this.inicializarTabla();
        this.menu_controlador=menuControlador;
        this.vista=vista;
    }


    public void agregar() {
        this.menu_controlador.cerrarVista();
        this.vista.setVisible(false);
        AgregarUsuarios new_vista=new AgregarUsuarios(this.menu_controlador);
        this.menu_controlador.controlador_interno=new_vista.controlador;
        this.menu_controlador.abrirVista(new_vista);
    }
       public void detalle(int row, int column) {
       
        this.menu_controlador.cerrarVista();
        this.vista.setVisible(false);
   
        int idUsuario= (Integer)datos_tabla[row][0];
        VerUsuarios new_vista=new VerUsuarios(this.menu_controlador,idUsuario);
        this.menu_controlador.controlador_interno=new_vista.controlador;
        this.menu_controlador.abrirVista(new_vista);
      
    }
   public void buscar(JTextField tbNombre, JTextField tbPrecio) {       
        //BUSCAR
        JOptionPane.showMessageDialog(vista,"Busqueda Realizada. " );
        ArrayList<UsuarioBEAN> lista= UsuarioDAO.getListaUsuarios();
        this.actualizar_tabla(lista);  
    }
    
    
    
    
    
    private void inicializarTabla() {
        ArrayList<UsuarioBEAN> lista= UsuarioDAO.getListaUsuarios();
        this.actualizar_tabla(lista);  
    }
    
    public void actualizar_tabla(ArrayList<UsuarioBEAN>lista){
            
            if(lista==null){
                this.datos_tabla=null;
                fireTableDataChanged();
                return;
            }
            
            Object[][] new_datos_tabla=new Object[lista.size()][columnas_tabla.length];
            
            for(int i=0;i<lista.size();i++){
               UsuarioBEAN elemento=lista.get(i);
               new_datos_tabla[i][0]=elemento.getId();
               new_datos_tabla[i][1]=elemento.getNombre();
               new_datos_tabla[i][2]=elemento.getMail();
            }
            this.datos_tabla=new_datos_tabla;
            fireTableDataChanged();
        }
    
    
    
    
    
    
        @Override
        public int getColumnCount() {
            if(columnas_tabla==null)return 0;
            return columnas_tabla.length;
        }
       @Override
        public int getRowCount() {
           if(datos_tabla==null)return 0;
            return datos_tabla.length;
        }
       @Override
        public String getColumnName(int col) {
           
            return columnas_tabla[col];
        }
       @Override
        public Object getValueAt(int row, int col) {
            if(datos_tabla==null)return " ";
            return datos_tabla[row][col];
        }
       @Override
        public Class getColumnClass(int c) {
           if(datos_tabla==null)return " ".getClass();
            return getValueAt(0, c).getClass();
        }
       @Override
        public void setValueAt(Object value, int row, int col) {
           
            System.out.println("Setting value at " + row + "," + col
                                   + " to " + value
                                   + " (an instance of "
                                   + value.getClass() + ")");
            datos_tabla[row][col] = value;
            fireTableCellUpdated(row, col);
            System.out.println("New value of data:");
            printDebugData();
            
        }      
        private void printDebugData() {
            int numRows = getRowCount();
            int numCols = getColumnCount();

            for (int i=0; i < numRows; i++) {
                System.out.print("    row " + i + ":");
                for (int j=0; j < numCols; j++) {
                    System.out.print("  " + datos_tabla[i][j]);
                }
                System.out.println();
            }
            System.out.println("--------------------------");
        }        



    public void buscar(JTextField tbNombre) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    
    
}
